/*
 * Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
 * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
 */

package org.jetbrains.kotlin.analysis.api.standalone.fir.test.cases.generated.cases.components.relationProvider;

import com.intellij.testFramework.TestDataPath;
import org.jetbrains.kotlin.test.util.KtTestUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.analysis.api.standalone.fir.test.configurators.AnalysisApiFirStandaloneModeTestConfiguratorFactory;
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestConfiguratorFactoryData;
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestConfigurator;
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.TestModuleKind;
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.FrontendKind;
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisSessionMode;
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiMode;
import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.components.relationProvider.AbstractHasConflictingSignatureWithTest;
import org.jetbrains.kotlin.test.TestMetadata;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;

import java.io.File;
import java.util.regex.Pattern;

/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.analysis.api.GenerateAnalysisApiTestsKt}. DO NOT MODIFY MANUALLY */
@SuppressWarnings("all")
@TestMetadata("analysis/analysis-api/testData/components/relationProvider/hasConflictingSignatureWith")
@TestDataPath("$PROJECT_ROOT")
public class FirStandaloneNormalAnalysisSourceModuleHasConflictingSignatureWithTestGenerated extends AbstractHasConflictingSignatureWithTest {
  @NotNull
  @Override
  public AnalysisApiTestConfigurator getConfigurator() {
    return AnalysisApiFirStandaloneModeTestConfiguratorFactory.INSTANCE.createConfigurator(
      new AnalysisApiTestConfiguratorFactoryData(
        FrontendKind.Fir,
        TestModuleKind.Source,
        AnalysisSessionMode.Normal,
        AnalysisApiMode.Standalone
      )
    );
  }

  @Test
  public void testAllFilesPresentInHasConflictingSignatureWith() {
    KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/components/relationProvider/hasConflictingSignatureWith"), Pattern.compile("^(.+)\\.kt$"), null, true);
  }

  @Test
  @TestMetadata("contextParametersDifferentOrder.kt")
  public void testContextParametersDifferentOrder() {
    runTest("analysis/analysis-api/testData/components/relationProvider/hasConflictingSignatureWith/contextParametersDifferentOrder.kt");
  }

  @Test
  @TestMetadata("differentFunctionNamesWithSameSignature.kt")
  public void testDifferentFunctionNamesWithSameSignature() {
    runTest("analysis/analysis-api/testData/components/relationProvider/hasConflictingSignatureWith/differentFunctionNamesWithSameSignature.kt");
  }

  @Test
  @TestMetadata("differentNumberOfContextParameters.kt")
  public void testDifferentNumberOfContextParameters() {
    runTest("analysis/analysis-api/testData/components/relationProvider/hasConflictingSignatureWith/differentNumberOfContextParameters.kt");
  }

  @Test
  @TestMetadata("dynamicParameterJS.kt")
  public void testDynamicParameterJS() {
    runTest("analysis/analysis-api/testData/components/relationProvider/hasConflictingSignatureWith/dynamicParameterJS.kt");
  }

  @Test
  @TestMetadata("extensionAndRegularFunctions.kt")
  public void testExtensionAndRegularFunctions() {
    runTest("analysis/analysis-api/testData/components/relationProvider/hasConflictingSignatureWith/extensionAndRegularFunctions.kt");
  }

  @Test
  @TestMetadata("functionAndMethod.kt")
  public void testFunctionAndMethod() {
    runTest("analysis/analysis-api/testData/components/relationProvider/hasConflictingSignatureWith/functionAndMethod.kt");
  }

  @Test
  @TestMetadata("functionTypeErasure.kt")
  public void testFunctionTypeErasure() {
    runTest("analysis/analysis-api/testData/components/relationProvider/hasConflictingSignatureWith/functionTypeErasure.kt");
  }

  @Test
  @TestMetadata("functionsWithTypeParameters.kt")
  public void testFunctionsWithTypeParameters() {
    runTest("analysis/analysis-api/testData/components/relationProvider/hasConflictingSignatureWith/functionsWithTypeParameters.kt");
  }

  @Test
  @TestMetadata("functionsWithTypeParametersJS.kt")
  public void testFunctionsWithTypeParametersJS() {
    runTest("analysis/analysis-api/testData/components/relationProvider/hasConflictingSignatureWith/functionsWithTypeParametersJS.kt");
  }

  @Test
  @TestMetadata("functionsWithTypeParametersNative.kt")
  public void testFunctionsWithTypeParametersNative() {
    runTest("analysis/analysis-api/testData/components/relationProvider/hasConflictingSignatureWith/functionsWithTypeParametersNative.kt");
  }

  @Test
  @TestMetadata("genericsWithDifferentBounds.kt")
  public void testGenericsWithDifferentBounds() {
    runTest("analysis/analysis-api/testData/components/relationProvider/hasConflictingSignatureWith/genericsWithDifferentBounds.kt");
  }

  @Test
  @TestMetadata("hiddenDeprecatedAndNonDeprecated.kt")
  public void testHiddenDeprecatedAndNonDeprecated() {
    runTest("analysis/analysis-api/testData/components/relationProvider/hasConflictingSignatureWith/hiddenDeprecatedAndNonDeprecated.kt");
  }

  @Test
  @TestMetadata("localAndGlobalFunction.kt")
  public void testLocalAndGlobalFunction() {
    runTest("analysis/analysis-api/testData/components/relationProvider/hasConflictingSignatureWith/localAndGlobalFunction.kt");
  }

  @Test
  @TestMetadata("lowPriorityAnnotation.kt")
  public void testLowPriorityAnnotation() {
    runTest("analysis/analysis-api/testData/components/relationProvider/hasConflictingSignatureWith/lowPriorityAnnotation.kt");
  }

  @Test
  @TestMetadata("methodAndExtensionFunction.kt")
  public void testMethodAndExtensionFunction() {
    runTest("analysis/analysis-api/testData/components/relationProvider/hasConflictingSignatureWith/methodAndExtensionFunction.kt");
  }

  @Test
  @TestMetadata("overloadedFunction.kt")
  public void testOverloadedFunction() {
    runTest("analysis/analysis-api/testData/components/relationProvider/hasConflictingSignatureWith/overloadedFunction.kt");
  }

  @Test
  @TestMetadata("returnValueOverload.kt")
  public void testReturnValueOverload() {
    runTest("analysis/analysis-api/testData/components/relationProvider/hasConflictingSignatureWith/returnValueOverload.kt");
  }

  @Test
  @TestMetadata("suspendAndNonSuspendContextParameter.kt")
  public void testSuspendAndNonSuspendContextParameter() {
    runTest("analysis/analysis-api/testData/components/relationProvider/hasConflictingSignatureWith/suspendAndNonSuspendContextParameter.kt");
  }

  @Test
  @TestMetadata("suspendAndNonSuspendFunctions.kt")
  public void testSuspendAndNonSuspendFunctions() {
    runTest("analysis/analysis-api/testData/components/relationProvider/hasConflictingSignatureWith/suspendAndNonSuspendFunctions.kt");
  }

  @Test
  @TestMetadata("suspendAndNonSuspendLambdaParameter.kt")
  public void testSuspendAndNonSuspendLambdaParameter() {
    runTest("analysis/analysis-api/testData/components/relationProvider/hasConflictingSignatureWith/suspendAndNonSuspendLambdaParameter.kt");
  }

  @Test
  @TestMetadata("typealiasedContextParameter.kt")
  public void testTypealiasedContextParameter() {
    runTest("analysis/analysis-api/testData/components/relationProvider/hasConflictingSignatureWith/typealiasedContextParameter.kt");
  }

  @Test
  @TestMetadata("varargParameterAndArrayParameter.kt")
  public void testVarargParameterAndArrayParameter() {
    runTest("analysis/analysis-api/testData/components/relationProvider/hasConflictingSignatureWith/varargParameterAndArrayParameter.kt");
  }

  @Test
  @TestMetadata("varargParameterAndArrayParameterJS.kt")
  public void testVarargParameterAndArrayParameterJS() {
    runTest("analysis/analysis-api/testData/components/relationProvider/hasConflictingSignatureWith/varargParameterAndArrayParameterJS.kt");
  }

  @Test
  @TestMetadata("varargParameterAndArrayParameterNative.kt")
  public void testVarargParameterAndArrayParameterNative() {
    runTest("analysis/analysis-api/testData/components/relationProvider/hasConflictingSignatureWith/varargParameterAndArrayParameterNative.kt");
  }

  @Test
  @TestMetadata("withAndWithoutContextParameter.kt")
  public void testWithAndWithoutContextParameter() {
    runTest("analysis/analysis-api/testData/components/relationProvider/hasConflictingSignatureWith/withAndWithoutContextParameter.kt");
  }

  @Nested
  @TestMetadata("analysis/analysis-api/testData/components/relationProvider/hasConflictingSignatureWith/withErrors")
  @TestDataPath("$PROJECT_ROOT")
  public class WithErrors {
    @Test
    public void testAllFilesPresentInWithErrors() {
      KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/components/relationProvider/hasConflictingSignatureWith/withErrors"), Pattern.compile("^(.+)\\.kt$"), null, true);
    }

    @Test
    @TestMetadata("errorValueParameters.kt")
    public void testErrorValueParameters() {
      runTest("analysis/analysis-api/testData/components/relationProvider/hasConflictingSignatureWith/withErrors/errorValueParameters.kt");
    }
  }
}
